﻿using System.Collections.Generic;

namespace Watcher
{
    public class CheatData
    {
        public static HashSet<int> AfterBoss1BeforeBoss2;

        public static HashSet<int> AfterBoss2BeforeBoss3;

        public static HashSet<int> AfterBoss3BeforeHard;

        public static HashSet<int> AfterHardBeforeOneOfThree;

        public static HashSet<int> AfterAnyMechanics;

        public static HashSet<int> AfterMechanicsBeforePlantera;

        public static HashSet<int> AfterPlanteraBeforeGolem;

        public static HashSet<int> AfterGolemBeforeCultist;

        public static HashSet<int> AfterLunaticCultist;

        public static HashSet<int> AfterMoonlord;

        //单体boss或事件

        public static HashSet<int> FlyingDutchman;

        public static HashSet<int> QueenBee;

        //单独物品
        public static HashSet<int> RareItems;

        //拿持日志中不需要记录的豁免物品
        public static HashSet<int> ImmunityHoldItems;

        //丢弃日志中不需要记录的豁免物品
        public static HashSet<int> ImmunityDropItems;

        //射弹日志中需要记录的危险的射弹物
        public static HashSet<int> DangerousProjectile;

        //蒸汽朋克。为了区别彩蛋图的原因
        public static HashSet<int> Steampunker;

        //全局npc检查应该排除的物品，如礼物，木箭等
        public static HashSet<int> AllNPCLootExclude;

        public CheatData()
        {
            SetCheatData();
        }

        public static void SetCheatData()
        {
            Config config;
            config = Config.LoadConfigFile();
            ImmunityHoldItems = config.拿持日志中的豁免物品ID;
            ImmunityDropItems = config.丢弃日志中的豁免物品ID;
            DangerousProjectile = config.射弹日志中需要记录的危险的射弹物ID;

            //蠕虫或脑子后，骷髅王前
            AfterBoss2BeforeBoss3 = new HashSet<int>
            {
                103, 104, 117, 119, 120, 121, 122, 123, 124, 125, 127, 174, 175,197, 198, 199, 200, 201, 202, 203, 204, 214, 217, 221, 231, 232,233, 234, 265, 792, 793, 794, 797, 798, 801, 3223, 3224, 3266, 3267, 3268, 3818, 3824, 3832, 3829
            };

            //蜂后
            QueenBee = new HashSet<int>
            {
                2361,2362,2363,2364,3333,4007,5294
            };

            //骷髅王后，肉山前
            AfterBoss3BeforeHard = new HashSet<int>
            {
                113, 151, 152, 153, 155, 156, 163, 164, 165, 218, 219, 220, 273, 274, 328, 329, 397, 1263, 3245, 3317, 4076, 4131, 4703, 5010, 5126, 5325, 5328
            };

            //困难模式后，一王前
            AfterHardBeforeOneOfThree = new HashSet<int>
            {
                435, 436, 481, 482, 483, 484, 496, 518, 519, 533, 534, 776, 777, 778, 991, 992, 993,
                1185, 1187, 1188, 1192, 1194, 1195, 1199, 1201, 1202, 1222, 1223,499,500,
                1224, 1336, 2270, 2331, 2366, 2551, 2750, 3209, 3210, 3211, 3283, 3289,
                3290, 3315, 3316, 3779, 3787, 3788, 4348, 4760, 4911, 371, 372,
                373, 374, 375, 376, 377, 378, 379, 380, 400, 401, 402, 403, 404,
                684, 685, 686, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
                1214, 1215, 1216, 1217, 1218, 1219, 2370, 2371, 2372, 3773, 3774,
                3775, 3776, 3777, 3778, 5004, 364, 365, 366, 381, 382, 391, 415,
                416, 487, 502, 523, 524, 525, 1104, 1105, 1106, 1184, 1191, 1198,
                1220, 1221, 1591, 1593, 2701, 2751, 2752, 2753, 2754, 2755, 3064,
                3182, 3184, 3185, 3186, 3782, 3884, 3979, 3980, 3981, 3982, 3983,
                3984, 3985, 3986, 3987, 4406, 4408, 5003, 5135, 492, 493, 761, 785,
                822, 860, 862, 897, 901, 903, 1162, 1247, 1612, 1613, 2494, 3991,
                3992, 4001, 4002, 4006, 5355, 1171, 2429, 2209, 2422, 3335, 507,
                508, 520, 521, 531, 1347, 1348, 1432, 1533, 1534, 1535, 1536, 1537,
                3091, 3092, 4714, 4406, 4408, 5324, 5329, 5330, 5336, 515, 516, 545,
                546, 1334, 1335, 1351, 1352, 3009, 3010, 3011, 3103, 3104
            };

            //任意机械boss后
            AfterAnyMechanics = new HashSet<int>
            {
                368, 494, 495, 506, 533, 550, 561, 578, 756, 787, 2535, 3284, 3286, 3819,
                3825, 3830, 3833, 4060, 4678, 4790, 551, 552, 553, 558, 559, 3797,
                3798, 3799, 3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808,
                4873, 4896, 4897, 4898, 4899, 4900, 4901, 425, 783, 1291, 3354,
                3355, 3356, 5338, 749, 821, 861, 1165, 1515
            };

            //所有机械boss后，世纪花前
            AfterMechanicsBeforePlantera = new HashSet<int>
            {
                579, 674, 675,
                990, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
                1262, 2188, 1001, 1002, 1003, 1004, 1005, 1006, 935, 936, 1343,
                2220, 947, 1179, 3353, 5289, 5296
            };

            //世纪之花后，石巨人前，包括南瓜月霜月
            AfterPlanteraBeforeGolem = new HashSet<int>
            {
                757, 760, 771, 772, 773, 774,
                1156, 1260, 1506, 1507, 1569, 1571, 1572, 2176, 2223, 3291, 4607,
                1159, 1160, 1161, 1503, 1504, 1505, 1546, 1547, 1548, 1549, 1550,
                1743, 1744, 1745, 1832, 1833, 1834, 2189, 823, 984, 1167, 1797,
                1830, 1864, 1866, 3336, 3997, 3998, 4005, 4409, 1339, 1340, 1341,
                1342, 1346, 1350, 1357, 1528, 1529, 1530, 1531, 1532, 1543, 1544,
                1545, 1551, 1552, 1606, 1730, 1783, 1785, 1814, 1815, 1816, 1817,
                1818, 1836, 1844, 1958, 1963, 1965, 3108, 3261, 3679, 3680, 3681,
                3682, 3683, 4392, 4445, 4446, 4447, 4448, 4449, 4457, 4458, 4459,
                4712, 4713, 4731, 5291, 5292, 5344, 5345, 5451, 5452
            };

            //石巨人后，教徒前
            AfterGolemBeforeCultist = new HashSet<int>
            {
                3820, 3826, 3831, 3834, 2199, 2200, 2201, 2202, 3871, 3872, 3873, 3874, 3875,
                3876, 3877, 3878, 3879, 3880, 3881, 3882, 1301, 1858, 1865, 2280,
                3110, 4005, 1261, 1292, 3337
            };

            //邪教徒后，包括月总物品
            AfterLunaticCultist = new HashSet<int>
            {
                3473, 3474, 3475, 3476, 3531, 3540,
                3542, 3543, 3536, 3537, 3538, 3539, 3573, 3574, 3575, 3576, 3572,
                3544, 3526, 3527, 3528, 3529, 3601
            };

            //月亮领主后
            AfterMoonlord = new HashSet<int>
            {
                2774, 2775, 2776, 2777, 2778,
                2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 3462, 3463, 3464,
                3465, 3466, 3522, 3523, 3524, 3525, 4956, 2760, 2761, 2762, 2757,
                2758, 2759, 2763, 2764, 2765, 3381, 3382, 3383, 4318, 4951, 3467,
                3461, 5401, 5402, 5403, 5404, 5405, 5406, 5407, 5408, 5409, 5410,
                5411, 5412, 5413, 5414, 5415, 5416, 3468, 3469, 3470, 3471, 4954,
                1131, 2768, 3567, 3568, 3577, 3530, 5335, 5364, 5134
            };

            //蒸汽朋克有关的所有物品
            Steampunker = new HashSet<int>
            {
                //喷气背包，静止钩
                3623, 748,748, 779, 780, 781, 782, 784, 839, 840, 841, 995, 1344, 1742, 2193,2203, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3618,
                3663, 4142, 4472, 948
            //齿轮做的东西
            //   2627,1708,2649,2655,1712,2638,2845,1718,2253,1722,2256,2125,2250,2241,2024,2036,2096,2130,2412,4114,3726,3727,3728,3729
            };


            //这里装的是 既可以npc掉落也可以用其他方式获得的物品，不要塞错了
            //主要来源于：木箭僵尸，火把僵尸，水母，宝箱怪，丛林宝箱怪，蒲公英怪，岩石巨人，花岗岩精
            AllNPCLootExclude = new HashSet<int>
            {
                //正常途径可以其他方式获取的
                3,8,40,52,56,57,166,282,307,313,499,500,593,678,880,1257,1336,1724,1774,1869,1922,2353,2676,3086,3109,3199,5395,
                //彩蛋种子等可以其他方式获取的
                112,157,671,683,2273,2623,3069,5147,   
                //冰雪宝箱怪，霜印剑，寒霜之花，冰雪弓， 疾风雪靴，暴雪瓶，冰刀，溜冰靴，雪球炮，冰雪回旋镖（未排序）
                676,725,1264, 1319,670,1579,987,950,724,
                //普通宝箱怪，双钩，魔法飞刀，点金石，泰坦手套，星星斗篷，十字项链，火花魔棒，再生手环，魔镜，云朵瓶，赫尔鞋子，链锤，鞋钉(排了)
                437,517,535,536,532,554,3069,49,50,53,54,5011,975,
                //城镇npc掉落物,因为敌怪或陷阱不算做玩家杀死
                260,867,2222,3349,3350,3351,3352,3548,3821,4372,4818,5065,5290
            };
        }
    }
}
